/* -*-jde-*- */
package app.util;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;

/**
 * Fecha Unicamente almacena números para representar una fecha.
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Diciembre 2011
 * @version 0.1
 */
public class Fecha {

    /**
     * Año para la fecha
     */
    private int anio;
    /**
     * Mes para la fecha
     */
    private int mes;
    /**
     * Día para la fecha
     */
    private int dia;

    /**
     * Construimos una fecha para usarla con postgresql
     *
     * @param anio
     * @param mes
     * @param dia
     */
    public Fecha(int anio, int mes, int dia) {
        this.anio = anio;
        this.mes = mes;
        this.dia = dia;
    }

    /**
     * Construimos una fecha con una representación de cadena que devuelve
     * postgresql en cada consulta
     *
     * @param fecha La representación de fecha en cadena.
     */
    public Fecha(String fecha) {
        //ex: 1989-02-18

        StringTokenizer st = new StringTokenizer(fecha, "-");
        this.anio = Integer.parseInt(st.nextToken());
        this.mes = Integer.parseInt(st.nextToken());
        this.dia = Integer.parseInt(st.nextToken());
    }

    /**
     * @return the anio
     */
    public int getAnio() {
        return anio;
    }

    /**
     * @param anio the anio to set
     */
    public void setAnio(int anio) {
        this.anio = anio;
    }

    /**
     * @return the mes
     */
    public int getMes() {
        return mes;
    }

    /**
     * @param mes the mes to set
     */
    public void setMes(int mes) {
        this.mes = mes;
    }

    /**
     * @return the dia
     */
    public int getDia() {
        return dia;
    }

    /**
     * @param dia the dia to set
     */
    public void setDia(int dia) {
        this.dia = dia;
    }

    /**
     * Regresamos el día actual como fecha.
     *
     * @return Hoy
     */
    public static Fecha getTodayDate() {
        Calendar cal = new GregorianCalendar();
        int month = cal.get(Calendar.MONTH);
        int year = cal.get(Calendar.YEAR);
        int day = cal.get(Calendar.DAY_OF_MONTH);

        return new Fecha(year, month + 1, day);
    }

    /**
     * Regresa la cadena en una representación útil para usarse en postgresql
     *
     * @return
     */
    @Override
    public String toString() {
        return anio + "/" + mes + "/" + dia;
    }

    public static void main(String args[]) {

        System.out.println(Fecha.getTodayDate());

    }
}
